package w83b.w83bManager;

import java.util.List;

import org.apache.commons.lang.StringUtils;

import w83b.w83bBeans.W83bAgrupacionesBean;
import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bDAO.W83bFactoriaDAO;
import w83b.w83bDAO.w83bConstantesBD.W83bAgrupacionesBD;


public class W83bAgrupaciones implements W83bIAgrupaciones {
	public java.util.List buscarAgrupaciones(w83b.w83bBeans.W83bAgrupacionesBean param) throws Exception{
		
		List listaAgrupaciones = W83bFactoriaDAO.getMantenimientosDAO().buscarAgrupaciones(param);
		
		return listaAgrupaciones;	
	}
	
	public java.util.List buscarConvenioPorAgrupacion(w83b.w83bBeans.W83bAgrupacionesBean param) throws Exception{
		
		
		List listaConvenios = W83bFactoriaDAO.getMantenimientosDAO().buscarConvenioPorAgrupacion(param);
		
		return listaConvenios;	
	}
	
	public w83b.w83bBeans.W83bAgrupacionesBean detalleAgrupaciones(w83b.w83bBeans.W83bAgrupacionesBean param) throws Exception{
		
		
		w83b.w83bBeans.W83bAgrupacionesBean agrupacion = W83bFactoriaDAO.getMantenimientosDAO().detalleAgrupaciones(param);
		
		return agrupacion;	
	}

	public String anyadirAgrupaciones(W83bAgrupacionesBean param)
			throws Exception {
		
		String resultado = "0";
		
		if(StringUtils.isEmpty(param.getCodAgrupaciones())){
			String maxAgrupacion = W83bFactoriaDAO.getMantenimientosDAO().maxCodAgrupacion();		
			if(W83bAgrupacionesBD.maxCodigo.equals(maxAgrupacion)){
				boolean codEncontrado = false;
				if(Integer.parseInt(maxAgrupacion)+1
						!=Integer.parseInt(W83bFactoriaDAO.getMantenimientosDAO().contarAgrupaciones())){
					while(!codEncontrado){
						maxAgrupacion = String.valueOf(Integer.parseInt(maxAgrupacion)-1);//NOPMD
						codEncontrado = !W83bFactoriaDAO.getMantenimientosDAO().existeAgrupacion(maxAgrupacion);
					}
					param.setCodAgrupaciones(maxAgrupacion);
					resultado = param.getCodAgrupaciones();
					W83bFactoriaDAO.getMantenimientosDAO().anyadirAgrupaciones(param);		
				}else{
					resultado = "-1";
				}
			}else{				
				maxAgrupacion = String.valueOf(Integer.parseInt(maxAgrupacion)+1);//NOPMD
				param.setCodAgrupaciones(maxAgrupacion);				
				W83bFactoriaDAO.getMantenimientosDAO().anyadirAgrupaciones(param);		
			}
		}else {
			if(!W83bFactoriaDAO.getMantenimientosDAO().existeAgrupacion(param.getCodAgrupaciones())){	
				W83bFactoriaDAO.getMantenimientosDAO().anyadirAgrupaciones(param);		
			}else{
				resultado = "-2";				
			}
		}		
		
		return resultado;
	}
	
	public String modificarAgrupaciones(W83bAgrupacionesBean param)
	throws Exception {
		
		String resultado =  W83bFactoriaDAO.getMantenimientosDAO().modificarAgrupaciones(param);		
		
		return resultado;
	}
	
	public java.lang.String borrarAgrupaciones(java.util.ArrayList param) 
	throws Exception {
		
		W83bUsuarioXLNetsBean userBean = (W83bUsuarioXLNetsBean)param.get(param.size()-1);
		param.remove(param.size()-1);
		
		String resultado =  W83bFactoriaDAO.getMantenimientosDAO().borrarAgrupaciones(param,userBean);		
		
		return resultado;
	}
	
	public java.lang.String borrarConveniosAgrupaciones(java.util.ArrayList param) 
	throws Exception {
		
		W83bUsuarioXLNetsBean userBean = (W83bUsuarioXLNetsBean)param.get(param.size()-1);
		param.remove(param.size()-1);
		
		String resultado =  W83bFactoriaDAO.getMantenimientosDAO().borrarConveniosAgrupacion(param,userBean);		
		
		return resultado;
	}
	
	public java.util.List buscarConvenios(w83b.w83bBeans.W83bConveniosBean param) throws Exception{
		
		
		List listaAgrupaciones = W83bFactoriaDAO.getMantenimientosDAO().buscarConvenios(param);
		
		return listaAgrupaciones;	
	}

}